﻿Option Explicit On


Public Class AsigacionDEperfiles_md
    Inherits System.Web.UI.Page

    Private Function BuscaSiUnPerfilYaSeEncuentraEnLista(ByVal perfil As String) As Boolean
        Dim I As Integer

        For I = 1 To gv_datosPerfiles.Rows.Count

            If UCase(gv_datosPerfiles.Rows(I - 1).Cells(1).Text) = UCase(perfil) Then
                BuscaSiUnPerfilYaSeEncuentraEnLista = True
                Exit Function
            End If
        Next I

        BuscaSiUnPerfilYaSeEncuentraEnLista = False


    End Function


    Private Sub Oculto_O_muestroGrivviwePErsonas(ByVal Valor As Boolean)

        LblMsjeSelecionar.Visible = Valor
        Gv_Personas.Visible = Valor

    End Sub




    Private Sub OcultoPaneles_paneles()

        P_Agregar.Visible = False
        P_modificar.Visible = False
        P_PersonaSeleccionada.Visible = False


    End Sub



    Private Function ValidaSiLaPersonaEsMEdico() As Boolean
        Dim Param(0) As ADODB.Parameter
        Dim Rs As ADODB.Recordset

        'me fijo si es un usuario medico, si no lo 

        Param(0) = New ADODB.Parameter
        Param(0).Name = "@Dni"
        Param(0).Type = ADODB.DataTypeEnum.adVarChar
        Param(0).Direction = ADODB.ParameterDirectionEnum.adParamInput
        Param(0).Value = LblDni.Text
        Param(0).Size = 10



        Rs = Datos.TraerTodos("BuscaSiunaPersonaTieneMAtricula", Param, "ValidaSiLaPersonaEsMEdico ")

        If Rs.RecordCount = 0 Then
            MsgBox("se produjo un error al querer veificar una persona es un medico ", MsgBoxStyle.Critical, "ERROR")
            ValidaSiLaPersonaEsMEdico = False
            Exit Function
        End If


        ValidaSiLaPersonaEsMEdico = CBool(Rs.Fields(0).Value)


    End Function
    Private Function CarGaPerfil() As Boolean
        Dim Param(2) As ADODB.Parameter


        Param(0) = New ADODB.Parameter
        Param(0).Name = "@Dni"
        Param(0).Type = ADODB.DataTypeEnum.adVarChar
        Param(0).Direction = ADODB.ParameterDirectionEnum.adParamInput
        Param(0).Value = LblDni.Text
        Param(0).Size = 10

        Param(1) = New ADODB.Parameter
        Param(1).Name = "@Perfil"
        Param(1).Type = ADODB.DataTypeEnum.adVarChar
        Param(1).Direction = ADODB.ParameterDirectionEnum.adParamInput
        Param(1).Value = CboNuevoPerfil.Text
        Param(1).Size = 50

        Param(2) = New ADODB.Parameter
        Param(2).Name = "@Habilitado"
        Param(2).Type = ADODB.DataTypeEnum.adBoolean
        Param(2).Direction = ADODB.ParameterDirectionEnum.adParamInput
        Param(2).Value = Chk_habilitado.Checked







        CarGaPerfil = Agregar("CarGaPerfil", Param, "Cargo o modifico el perfil ")






    End Function

    Private Sub RealizaBusqueda()
        Dim Rs As ADODB.Recordset
        Dim Param(2) As ADODB.Parameter




        Param(0) = New ADODB.Parameter
        Param(0).Name = "@Dni"
        Param(0).Type = ADODB.DataTypeEnum.adVarChar
        Param(0).Direction = ADODB.ParameterDirectionEnum.adParamInput
        Param(0).Value = txtDni.Text
        Param(0).Size = 10

        Param(1) = New ADODB.Parameter
        Param(1).Name = "@Apellido"
        Param(1).Type = ADODB.DataTypeEnum.adVarChar
        Param(1).Direction = ADODB.ParameterDirectionEnum.adParamInput
        Param(1).Value = txtApellido.Text
        Param(1).Size = 50

        Param(2) = New ADODB.Parameter
        Param(2).Name = "@Nombre"
        Param(2).Type = ADODB.DataTypeEnum.adVarChar
        Param(2).Direction = ADODB.ParameterDirectionEnum.adParamInput
        Param(2).Value = txtNombre.Text
        Param(2).Size = 50


        Rs = Datos.TraerTodos("BuscaPersonaPAraAsociarUnperfil", Param, "Busca personas para asociar perfil ")


        Gv_Personas.DataSource = FG.cargaUnDataTable(Rs)
        Gv_Personas.DataBind()



        'muestro el cartel de la Seleccione una persona 
        If Rs.RecordCount > 0 Then
            LblMsjeSelecionar.Visible = True

        Else
            'muestro el mesaje de que no se encontraron resultados
            FG.MuestraCartel("No se encontraron resultados", lblMensaje)
            LblMsjeSelecionar.Visible = False

        End If



    End Sub

    Private Sub INicializa()
        P_PersonaSeleccionada.Visible = False
        P_Agregar.Visible = False
        P_modificar.Visible = False

    End Sub
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load






        If Not Page.IsPostBack Then
            FG.culturaPaginas()

            INicializa()



            FG.CargaCombo("traePerfilesSinUserWeb", cboPerfiles)
            FG.CargaCombo("traePerfilesSinUserWeb", CboNuevoPerfil)




        End If

    End Sub

    Protected Sub txtDni_TextChanged(ByVal sender As Object, ByVal e As EventArgs) Handles txtDni.TextChanged


    End Sub

    Protected Sub txtApellido_TextChanged(ByVal sender As Object, ByVal e As EventArgs) Handles txtApellido.TextChanged


    End Sub

    Protected Sub txtNombre_TextChanged(ByVal sender As Object, ByVal e As EventArgs) Handles txtNombre.TextChanged

    End Sub

    Protected Sub CmdBuscar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles CmdBuscar.Click


        'hago visible la grilla donde se van a mostrar los datos 
        Oculto_O_muestroGrivviwePErsonas(True)
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''


        'saco el cartel''
        FG.SacaCartelDeAViso(lblMensaje)
        '''''''''''''''''''

        'limpio la grilla ''
        Gv_Personas.DataBind()
        LblMsjeSelecionar.Visible = False
        '''''''''''''''''''''''''''''''''''''''

        'Saco los paneles 
        OcultoPaneles_paneles()




        ''hago las validaciones
        If txtApellido.Text = "" And txtNombre.Text = "" And txtDni.Text = "" Then
            FG.MuestraCartel("No se ha especificado ningun creterio de busqueda", lblMensaje)
            Exit Sub
        End If

        If txtDni.Text <> "" Then
            If IsNumeric(txtDni.Text) = False Then
                FG.MuestraCartel("El campo DNI solo puede tener caracteres numericos", lblMensaje)
                Exit Sub
            End If
        End If

        If BuscaSiHayNumerosEncadena(txtApellido.Text) = True Then
            FG.MuestraCartel("No se permiten numeros en el apellido", lblMensaje)
            Exit Sub
        End If

        If BuscaSiHayNumerosEncadena(txtNombre.Text) = True Then
            FG.MuestraCartel("No se permiten numeros en el Nombre", lblMensaje)
            Exit Sub
        End If



        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''





        ''funcion q realiza Busqueda ''
        RealizaBusqueda()








    End Sub

    Private Sub MuestroPerfilesDePersona()
        Dim Rs As ADODB.Recordset
        Dim param(0) As ADODB.Parameter


        'cargo la grlla con los posible perfiles 
        param(0) = New ADODB.Parameter
        param(0).Name = "@Dni"
        param(0).Type = ADODB.DataTypeEnum.adVarChar
        param(0).Direction = ADODB.ParameterDirectionEnum.adParamInput
        param(0).Value = LblDni.Text
        param(0).Size = 10

        Rs = Datos.TraerTodos("TraePerfilesDeUnaPersonaXdni", param, "gestion de perfiles trae perfiles de una persona ")


        gv_datosPerfiles.DataSource = FG.cargaUnDataTable(Rs)
        gv_datosPerfiles.DataBind()



        'oculto el dataGrid personas
        LblMsjeSelecionar.Visible = False
        Gv_Personas.Visible = False


        ''oculto la grilla donde busco la personas personas
        Oculto_O_muestroGrivviwePErsonas(False)

    End Sub



    Protected Sub Gv_Personas_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles Gv_Personas.SelectedIndexChanged
        Dim row As GridViewRow = Gv_Personas.SelectedRow
        Dim param(0) As ADODB.Parameter




        'txtDniSelec.Text = row.Cells(1).Text


        P_PersonaSeleccionada.Visible = True

        'paneles que estan dentro del P_personaselecionada 
        P_modificar.Visible = False
        P_Agregar.Visible = False


        'cargo los la lbl 
        lblNOmbreYapellido.Text = row.Cells(2).Text & ", " & row.Cells(3).Text
        LblDni.Text = row.Cells(1).Text




        ''''''''procedimiento ''''''
        MuestroPerfilesDePersona()


        '''''''''''''''''''''''''''''''''''''''''''''''''''

    End Sub
    Private Function realizaMOdificacionDePerfil() As Boolean



        Dim Param(3) As ADODB.Parameter


        Param(0) = New ADODB.Parameter
        Param(0).Name = "@Dni"
        Param(0).Type = ADODB.DataTypeEnum.adVarChar
        Param(0).Direction = ADODB.ParameterDirectionEnum.adParamInput
        Param(0).Value = LblDni.Text
        Param(0).Size = 10


        Param(1) = New ADODB.Parameter
        Param(1).Name = "@PerfilViejo"
        Param(1).Type = ADODB.DataTypeEnum.adVarChar
        Param(1).Direction = ADODB.ParameterDirectionEnum.adParamInput
        Param(1).Value = txtPerfil.Text
        Param(1).Size = 50


        Param(2) = New ADODB.Parameter
        Param(2).Name = "@PerfilNuevo"
        Param(2).Type = ADODB.DataTypeEnum.adVarChar
        Param(2).Direction = ADODB.ParameterDirectionEnum.adParamInput
        Param(2).Size = 50
        Param(2).Value = cboPerfiles.Text

        Param(3) = New ADODB.Parameter
        Param(3).Name = "@Habilitado"
        Param(3).Type = ADODB.DataTypeEnum.adBoolean
        Param(3).Direction = ADODB.ParameterDirectionEnum.adParamInput
        Param(3).Value = Chk_habilitado.Checked


        realizaMOdificacionDePerfil = Datos.Modificar("MofidificaPerfilDeUNaPersona", Param, "mofifica un perfil -Gestion de perfiles")



    End Function




    Protected Sub CmdGuardar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles CmdGuardar.Click
        Dim Resp As Single

        '''''''oculto el msje ''''''''
        LblMsjeALGuardar.Visible = False
        '''''''''''''''''''''''''''''


        If BuscaSiUnPerfilYaSeEncuentraEnLista(cboPerfiles.Text) = True Then
            FG.MuestraCartelDeguardar("El perfil ya se encuentra en la lista", LblMsjeALGuardar)
            Exit Sub
        End If

        ''si es un medico , me fio que antes este cargado
        If UCase(cboPerfiles.Text) = UCase("Medico") Then
            If ValidaSiLaPersonaEsMEdico() = False Then
                FG.MuestraCartelDeguardar("La persona seleccionada no se encuentra registrada como medico", LblMsjeALGuardar)
                Exit Sub
            End If
        End If




        If Chk_habilitado.Checked = False Then
            Resp = MsgBox("Va a dejar desabilitado el perfil, esta seguro de continuar?", MsgBoxStyle.YesNo, "Pregunta")

            If Resp <> 6 Then
                Exit Sub
            End If

        End If
        ''''''''''''''''''''''''''''




        If realizaMOdificacionDePerfil() = False Then
            MsgBox("ERROR al cambiar el perfil", MsgBoxStyle.Critical, "ERrOR")

        Else
            P_modificar.Visible = False
            MuestroPerfilesDePersona()
        End If











    End Sub

    Protected Sub lblCerrarPersonaSeleccionada_Click(ByVal sender As Object, ByVal e As EventArgs) Handles lblCerrarPersonaSeleccionada.Click

        OcultoPaneles_paneles()
        txtDni.Text = ""
        txtApellido.Text = ""
        txtNombre.Text = ""


        txtDni.Focus()



    End Sub

    Protected Sub gv_datosPerfiles_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles gv_datosPerfiles.SelectedIndexChanged
        Dim row As GridViewRow = gv_datosPerfiles.SelectedRow

        'lbl de mensajes de errores
        LblMsjeALGuardar.Visible = False
        ''''''''''''''''''''''''''''


        txtPerfil.Text = row.Cells(1).Text
        CboNuevoPerfil.Text = row.Cells(1).Text


        Chk_habilitado.Checked = IIf(UCase(row.Cells(2).Text) = "SI", True, False)




        P_modificar.Visible = True
        CboNuevoPerfil.Focus()

        P_Agregar.Visible = False

    End Sub

    Protected Sub lblCerrarPanelAmodificar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles lblCerrarPanelAmodificar.Click
        P_modificar.Visible = False

    End Sub

    Protected Sub CmdAgregar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles CmdAgregar.Click



        lblMensajeCargarNuevoPerfil.Visible = False
        lblMensajeCargarNuevoPerfil.Text = ""


        If BuscaSiUnPerfilYaSeEncuentraEnLista(CboNuevoPerfil.Text) = True Then
            lblMensajeCargarNuevoPerfil.Visible = True
            lblMensajeCargarNuevoPerfil.Text = "El perfil ya se encuentra en la lista"
            Exit Sub
        End If



        'hago la carga o modificacion
        If CarGaPerfil() = False Then
            MsgBox("Se produjo un error al querer realizar la transaccion", MsgBoxStyle.Critical, "ERROR")

        Else

            ''funcion q realiza Busqueda ''
            P_Agregar.Visible = False
            MuestroPerfilesDePersona()





        End If




    End Sub

    Protected Sub lnkAgregarPerfil_Click(ByVal sender As Object, ByVal e As EventArgs) Handles lnkAgregarPerfil.Click
        P_Agregar.Visible = True

        P_modificar.Visible = False
        lblMensajeCargarNuevoPerfil.Visible = False


    End Sub

    Protected Sub lblCerrar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles lblCerrar.Click
        P_Agregar.Visible = False

    End Sub

    Protected Sub CboNuevoPerfil_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles CboNuevoPerfil.SelectedIndexChanged

    End Sub
End Class